home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / ada / ada_lrm1.zip / CHAPE.DOC < prev    next >
Text File  |  1988-11-30  |  20KB  |  926 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.                              E. Syntax Summary
  12.  
  13.  
  14.  
  15.  
  16.     2.1
  17.  
  18.     graphic_character ::= basic_graphic_character
  19.        | lower_case_letter | other_special_character
  20.  
  21.     basic_graphic_character ::=
  22.          upper_case_letter | digit
  23.        | special_character | space_character
  24.  
  25.     basic_character ::=
  26.          basic_graphic_character | format_effector
  27.  
  28.     2.3
  29.  
  30.     identifier ::=
  31.        letter {[underline] letter_or_digit}
  32.  
  33.     letter_or_digit ::= letter | digit
  34.  
  35.     letter ::= upper_case_letter | lower_case_letter
  36.  
  37.     2.4
  38.  
  39.     numeric_literal ::= decimal_literal | based_literal
  40.  
  41.     2.4.1
  42.  
  43.     decimal_literal ::= integer [.integer] [exponent]
  44.  
  45.     integer ::= digit {[underline] digit}
  46.  
  47.     exponent ::= E [+] integer | E - integer
  48.  
  49.     2.4.2
  50.  
  51.     based_literal ::=
  52.        base # based_integer [.based_integer] # [exponent]
  53.  
  54.     base ::= integer
  55.  
  56.     based_integer ::=
  57.        extended_digit {[underline] extended_digit}
  58.  
  59.     extended_digit ::= digit | letter
  60.  
  61.  
  62.  
  63.                                    E - 1
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.     2.5
  73.  
  74.     character_literal ::= 'graphic_character'
  75.  
  76.     2.6
  77.  
  78.     string_literal ::= "{graphic_character}"
  79.  
  80.     2.8
  81.  
  82.     pragma ::=
  83.        pragma identifier [(argument_association
  84.                                {, argument_association})];
  85.  
  86.     argument_association ::=
  87.          [argument_identifier =>] name
  88.        | [argument_identifier =>] expression
  89.  
  90.     3.1
  91.  
  92.     basic_declaration ::=
  93.          object_declaration     | number_declaration
  94.        | type_declaration       | subtype_declaration
  95.        | subprogram_declaration | package_declaration
  96.        | task_declaration       | generic_declaration
  97.        | exception_declaration  | generic_instantiation
  98.        | renaming_declaration   | deferred_constant_declaration
  99.  
  100.     3.2
  101.  
  102.     object_declaration ::=
  103.          identifier_list : [constant] subtype_indication [:= expression];
  104.        | identifier_list : [constant] constrained_array_definition
  105.                                                          [:= expression];
  106.  
  107.     number_declaration ::=
  108.          identifier_list : constant := universal_static_expression;
  109.  
  110.     identifier_list ::=  identifier {, identifier}
  111.  
  112.     3.3.1
  113.  
  114.     type_declaration ::=  full_type_declaration
  115.        | incomplete_type_declaration | private_type_declaration
  116.  
  117.     full_type_declaration ::=
  118.      type identifier [discriminant_part] is type_definition;
  119.  
  120.     type_definition ::=
  121.          enumeration_type_definition | integer_type_definition
  122.        | real_type_definition        | array_type_definition
  123.        | record_type_definition      | access_type_definition
  124.        | derived_type_definition
  125.  
  126.  
  127.  
  128.  
  129.                                    E - 2
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.     3.3.2
  139.  
  140.     subtype_declaration ::=
  141.        subtype identifier is subtype_indication;
  142.  
  143.     subtype_indication ::=  type_mark [constraint]
  144.  
  145.     type_mark ::= type_name | subtype_name
  146.  
  147.     constraint ::=
  148.          range_constraint       | floating_point_constraint
  149.        | fixed_point_constraint | index_constraint
  150.        | discriminant_constraint
  151.  
  152.     3.4
  153.  
  154.     derived_type_definition ::= new subtype_indication
  155.  
  156.     3.5
  157.  
  158.     range_constraint ::=  range range
  159.  
  160.     range ::=  range_attribute
  161.        | simple_expression .. simple_expression
  162.  
  163.     3.5.1
  164.  
  165.     enumeration_type_definition ::=
  166.        (enumeration_literal_specification
  167.           {, enumeration_literal_specification})
  168.  
  169.     enumeration_literal_specification ::=  enumeration_literal
  170.  
  171.     enumeration_literal ::=  identifier | character_literal
  172.  
  173.     3.5.4
  174.  
  175.     integer_type_definition ::=  range_constraint
  176.  
  177.     3.5.6
  178.  
  179.     real_type_definition ::=
  180.        floating_point_constraint | fixed_point_constraint
  181.  
  182.     3.5.7
  183.  
  184.     floating_point_constraint ::=
  185.        floating_accuracy_definition [range_constraint]
  186.  
  187.     floating_accuracy_definition ::=
  188.        digits static_simple_expression
  189.  
  190.     3.5.9
  191.  
  192.  
  193.  
  194.  
  195.                                    E - 3
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.     fixed_point_constraint ::=
  205.        fixed_accuracy_definition [range_constraint]
  206.  
  207.     fixed_accuracy_definition ::=
  208.        delta static_simple_expression
  209.  
  210.     3.6
  211.  
  212.     array_type_definition ::=
  213.        unconstrained_array_definition | constrained_array_definition
  214.  
  215.     unconstrained_array_definition ::=
  216.        array(index_subtype_definition {, index_subtype_definition}) of
  217.                 component_subtype_indication
  218.  
  219.     constrained_array_definition ::=
  220.        array index_constraint of component_subtype_indication
  221.  
  222.     index_subtype_definition ::= type_mark range <>
  223.  
  224.     index_constraint ::=  (discrete_range {, discrete_range})
  225.  
  226.     discrete_range ::= discrete_subtype_indication | range
  227.  
  228.     3.7
  229.  
  230.     record_type_definition ::=
  231.        record
  232.           component_list
  233.        end record
  234.  
  235.     component_list ::=
  236.           component_declaration {component_declaration}
  237.        | {component_declaration} variant_part
  238.        |  null;
  239.  
  240.     component_declaration ::=
  241.        identifier_list : component_subtype_definition [:= expression];
  242.  
  243.     component_subtype_definition ::=  subtype_indication
  244.  
  245.     3.7.1
  246.  
  247.     discriminant_part ::=
  248.        (discriminant_specification {; discriminant_specification})
  249.  
  250.     discriminant_specification ::=
  251.        identifier_list : type_mark [:= expression]
  252.  
  253.     3.7.2
  254.  
  255.     discriminant_constraint ::=
  256.        (discriminant_association {, discriminant_association})
  257.  
  258.  
  259.  
  260.  
  261.                                    E - 4
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.     discriminant_association ::=
  271.        [discriminant_simple_name {| discriminant_simple_name} =>]
  272.                 expression
  273.  
  274.     3.7.3
  275.  
  276.     variant_part ::=
  277.        case discriminant_simple_name is
  278.            variant
  279.           {variant}
  280.        end case;
  281.  
  282.     variant ::=
  283.        when choice {| choice} =>
  284.           component_list
  285.  
  286.     choice ::= simple_expression
  287.        | discrete_range | others | component_simple_name
  288.  
  289.     3.8
  290.  
  291.     access_type_definition ::= access subtype_indication
  292.  
  293.     3.8.1
  294.  
  295.     incomplete_type_declaration ::=
  296.        type identifier [discriminant_part];
  297.  
  298.     3.9
  299.  
  300.     declarative_part ::=
  301.        {basic_declarative_item} {later_declarative_item}
  302.  
  303.     basic_declarative_item ::= basic_declaration
  304.        | representation_clause | use_clause
  305.  
  306.     later_declarative_item ::= body
  307.        | subprogram_declaration | package_declaration
  308.        | task_declaration       | generic_declaration
  309.        | use_clause             | generic_instantiation
  310.  
  311.     body ::= proper_body | body_stub
  312.  
  313.     proper_body ::=
  314.        subprogram_body | package_body | task_body
  315.  
  316.     4.1
  317.  
  318.     name ::= simple_name
  319.        | character_literal  | operator_symbol
  320.        | indexed_component  | slice
  321.        | selected_component | attribute
  322.  
  323.     simple_name ::= identifier
  324.  
  325.  
  326.  
  327.                                    E - 5
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.     prefix ::= name | function_call
  337.  
  338.     4.1.1
  339.  
  340.     indexed_component ::= prefix(expression {, expression})
  341.  
  342.     4.1.2
  343.  
  344.     slice ::= prefix(discrete_range)
  345.  
  346.     4.1.3
  347.  
  348.     selected_component ::= prefix.selector
  349.  
  350.     selector ::= simple_name
  351.        | character_literal | operator_symbol | all
  352.  
  353.     4.1.4
  354.  
  355.     attribute ::= prefix'attribute_designator
  356.  
  357.     attribute_designator ::=
  358.        simple_name [(universal_static_expression)]
  359.  
  360.     4.3
  361.  
  362.     aggregate ::=
  363.        (component_association {, component_association})
  364.  
  365.     component_association ::=
  366.        [choice {| choice} => ] expression
  367.  
  368.     4.4
  369.  
  370.     expression ::=
  371.          relation {and relation} | relation {and then relation}
  372.        | relation {or relation}  | relation {or else relation}
  373.        | relation {xor relation}
  374.  
  375.     relation ::=
  376.          simple_expression [relational_operator simple_expression]
  377.        | simple_expression [not] in range
  378.        | simple_expression [not] in type_mark
  379.  
  380.     simple_expression ::=
  381.        [unary_adding_operator] term {binary_adding_operator term}
  382.  
  383.     term ::= factor {multiplying_operator factor}
  384.  
  385.     factor ::= primary [** primary] | abs primary | not primary
  386.  
  387.